home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-11-09 | 43.8 KB | 1,181 lines |
-
-
-
-
-
-
- Network Working Group H. Danisch
- Request for Comments: 1824 E.I.S.S./IAKS
- Category: Informational August 1995
-
-
- The Exponential Security System TESS:
- An Identity-Based Cryptographic Protocol
- for Authenticated Key-Exchange
- (E.I.S.S.-Report 1995/4)
-
- Status of this Memo
-
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
-
- Abstract
-
- This informational RFC describes the basic mechanisms and functions
- of an identity based system for the secure authenticated exchange of
- cryptographic keys, the generation of signatures, and the authentic
- distribution of public keys.
-
- Table of Contents
-
- 1. Introduction and preliminary remarks . . . . . . . . . . . . . 2
- 1.1. Definition of terms/Terminology . . . . . . . . . . . . 2
- 1.2. Required mechanisms . . . . . . . . . . . . . . . . . . 4
- 2. Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
- 2.1. SKIA Setup . . . . . . . . . . . . . . . . . . . . . . . 5
- 2.2. User Setup . . . . . . . . . . . . . . . . . . . . . . . 5
- 3. Authentication . . . . . . . . . . . . . . . . . . . . . . . . 7
- 3.1. Zero Knowledge Authentication . . . . . . . . . . . . . 7
- 3.2. Unilateral Authentication . . . . . . . . . . . . . . . 8
- 3.3. Mutual Authentication . . . . . . . . . . . . . . . . . 9
- 3.4. Message Signing . . . . . . . . . . . . . . . . . . . . 10
- 4. Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . 10
- 4.1. Non-Escrowed Key Generation . . . . . . . . . . . . . . 11
- 4.2. Hardware Protected Key . . . . . . . . . . . . . . . . . 11
- 4.3. Key Regeneration . . . . . . . . . . . . . . . . . . . . 12
- 4.4. r ^ r . . . . . . . . . . . . . . . . . . . . . . . . . 13
- 4.5. Implicit Key Exchange . . . . . . . . . . . . . . . . . 13
- 4.6. Law Enforcement . . . . . . . . . . . . . . . . . . . . 13
- 4.7. Usage of other Algebraic Groups . . . . . . . . . . . . 14
- 4.7.1 DSA subgroup SKIA Setup . . . . . . . . . . . . . 14
- 4.7.2 Escrowed DSA subgroup User Setup . . . . . . . . 14
- 4.7.3 Non-Escrowed DSA subgroup User Setup . . . . . . 15
- 4.7.4 DSA subgroup Authentication . . . . . . . . . . . 15
-
-
-
- Danisch Informational [Page 1]
-
- RFC 1824 TESS August 1995
-
-
- 5. Multiple SKIAs . . . . . . . . . . . . . . . . . . . . . . . . 15
- 5.1. Unstructured SKIAs . . . . . . . . . . . . . . . . . . . 15
- 5.2. Hierarchical SKIAs . . . . . . . . . . . . . . . . . . . 16
- 5.3. Example: A DNS-based public key structure . . . . . . . 18
- Security Considerations . . . . . . . . . . . . . . . . . . . . . 19
- References . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
- Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 21
-
- 1. Introduction and preliminary remarks
-
- This RFC describes The Exponential Security System TESS [1]. TESS is
- a toolbox set system of different but cooperating cryptographic
- mechanisms and functions based on the primitive of discrete
- exponentiation. TESS is based on asymmetric cryptographical protocols
- and a structure of self-certified public keys.
-
- The most important mechanisms TESS is based on are the ElGamal
- signature [2, 3] and the KATHY protocols (KeY exchange with embedded
- AuTHentication), which were simultaneously discovered by Guenther [4]
- and Bauspiess and Knobloch [5, 6, 7].
-
- This RFC explains how to create and use the secret and public keys of
- TESS and shows a method for the secure distribution of the public
- keys.
-
- It is expected that the reader is familiar with the basics of
- cryptography, the Discrete Logarithm Problem, and the ElGamal
- signature mechanism.
-
- Due to the ASCII representation of this RFC the following style is
- choosen for mathematical purposes:
-
- - a ^ b means the exponentiation of a to the power of b, which is
- always used within a modulo context.
-
- - a[b] means a with an index or subscription of b.
-
- - a = b means equality or congruency within a modulo context.
-
- 1.1. Definition of terms/Terminology
-
- Key pair
-
- A key pair is a set of a public and a secret key which belong
- together. There are two distinct kinds of key pairs, the SKIA key
- pair and the User key pair. (As will be shown in the section about
- hierarchical SKIAs, the two kinds of keys are not really distinct.
- They are the same thing seen from a different point of view.)
-
-
-
- Danisch Informational [Page 2]
-
- RFC 1824 TESS August 1995
-
-
- User
-
- Any principal (human or machine) who owns, holds and uses a User
- key pair and can be uniquely identified by any description (see
- the Identity Descriptor below).
-
- In this RFC example users are referred to as A, B, C or Alice and
- Bob.
-
- SKIA
-
- SKIA is an acronym for "Secure Key Issuing Authority". The SKIA is
- a trusted local authority which generates the public and secret
- part of a User key pair. It is the SKIA's duty to verify whether
- the identity encoded in the key pair (see below) belongs to the
- key holder. It has to check passports, identity cards, driving
- licenses etc. to investigate the real world identity of the key
- owner. Since every key has an implicite signature of the SKIA it
- came from, the SKIA is responsible for the correctness of the
- encoded identity.
-
- Since the SKIA has to check the real identity of users, it is
- usually able to work within a small physical range only (like a
- campus or a city). Therefore, not all users of a wide area or
- world wide area network can get their keys from the same SKIA with
- reasonable expense. There is the need for multiple SKIAs which
- can work locally. This implies the need of a web of trust levels
- and trust forwards. Communication partners with keys from the
- same SKIA know the public data of their SKIA because it is part of
- their own key. Partners with keys from different SKIAs have to
- make use of the web to learn about the origin, the trust level,
- and the public key of the SKIA which issued the other key.
-
- Id[A] Identity Descriptor
-
- The Identity Descriptor is a part of the public User key. It is a
- somehow structured bitstring describing the key owner in a certain
- way. This description of the key owner should be precise enough to
- fully identify the owner of a User key. The description depends on
- the nature of the owner. For a human this could be the name, the
- address, the phone number, date of birth, size of the feet, color
- of the eyes, or anything else. For a machine this could be the
- hostname, the hostid, the internet address etc., for a fax machine
- or a modem it could be the international phone number.
-
- Furthermore, the description bitstring could contain key
- management data as the name of the SKIA (see below) which issued
- the key, the SKIA-specific serial number, the expiry date of the
-
-
-
- Danisch Informational [Page 3]
-
- RFC 1824 TESS August 1995
-
-
- key, whether the secret part of the key is a software key or
- hidden in a hardware device (see section Enhancements), etc.
-
- Note that the numerical interpretation (the hash value) of the
- Identity Descriptor is an essential part of the mathematical
- mechanism of the TESS protocol. It can not be changed in any way
- without destroying the key structure. Therefore, knowing the
- public part of a user key pair always means knowing the Identity
- Descriptor as composed by the SKIA which issued this key. This is
- an important security feature of this mechanism.
-
- The contents of the Identity Descriptor have to be verified by the
- issuing SKIA at key generation time. The trust level of the User
- Key depends on the trust level of the SKIA. A certain Identity
- Descriptor must not be used more than once for creating a User
- Key. There must not exist distinct keys with the same Identity
- Descriptor. Nevertheless, a user may have several keys with
- distinct expiration times, key lengths, serial numbers, or
- security levels, which affect the contents of the Identity
- Descriptor.
-
- However, it is emphasized that there are no assumptions about the
- structure of the Identity Descriptor. The SKIA may choose any
- construction method depending on its purposes.
-
- The Identity Descriptor of a certain user A is referred to as
- Id[A]. Whereever the Identity Descriptor Id[A] is used in a
- mathematical context, its cryptographical hash sum H(Id[A]) is
- used.
-
- Encrypt(Key,Message)
- Decrypt(Key,Message)
-
- Encryption and Decryption of the Message with any common cipher.
-
- 1.2. Required mechanisms
-
- The protocols described in this RFC require the following
- submechanisms:
-
- - A random number generator of cryptographic quality
-
- - A prime number generator of cryptographic quality
-
- - A hash mechanism H() of cryptographic quality
-
- - An encryption mechanism (e.g. a common block cipher)
-
-
-
-
- Danisch Informational [Page 4]
-
- RFC 1824 TESS August 1995
-
-
- - An arithmetical library for long unsigned integers
-
- - A method for checking network identities against real-world
- identities (e.g. an authority which checks human identity cards
- etc.)
-
- 2. Setup
-
- This section describes the base method for the creation of the SKIA
- and the User key pairs. Enhancements and modifications are described
- in subsequent sections.
-
- The main idea of the protocols described below is to generate an
- ElGamal signature (r,s) for an Identity Descriptor Id[A] of a user A.
- Id[A] and r form the user's public key and s is the users secret key.
- The connection between the secret and the public key is the
- verification equation for the ElGamal signature (r,s). Instead of
- checking the signature (r,s), the equation is used in 'reverse mode'
- to calculate r^s from public data without knowledge of the secret s.
-
- The authority generating those signatures is the SKIA introduced
- above.
-
- 2.1. SKIA Setup
-
- By the following steps the SKIA key pair is created:
-
- - p: choose a large prime p of at least 512 bit length.
-
- - g: choose a primitive root g in GF(p)
-
- - x: choose a random number x in the range 1 < x < p-1
-
- - y:= ( g ^ x ) mod p
-
- The public part of the SKIA is the triple (p,g,y), the secret part is
- x.
-
- Since the public triple (p,g,y) is needed within the verification
- equation for the signatures created by the SKIA, this triple is also
- an essential part of all user keys generated by this SKIA.
-
- 2.2. User Setup
-
- The User Setup is the generation of an ElGamal signature on the
- user's Identity Descriptor by the SKIA. This can be done more than
- once for a specific User, but it is done only once for a specific
- Identity Descriptor.
-
-
-
- Danisch Informational [Page 5]
-
- RFC 1824 TESS August 1995
-
-
- To create a User key pair for a User A, the SKIA has to perform the
- following steps:
-
- - Id[A]: Describe the key owner A in any way (name, address, etc.),
- convert this description into a bit- or byte-oriented
- representation, and concatenate them to form the Identity
- Descriptor Id[A].
-
- - k[A]: choose a random number k[A] with gcd(k[A],p-1) = 1. k[A]
- must not be revealed by the SKIA.
-
- - r[A] := ( g ^ k[A] ) mod p
-
- - s[A] := ( H(Id[A]) - x * r[A] ) * ( k[A] ^ -1 ) mod (p-1)
-
- The calculated set of numbers fulfills the equation:
-
- x * r[A] + s[A] * k[A] = H(Id[A]) mod (p-1).
-
- The public part of the generated key of A consists of Id[A] and r[A],
- referenced to as (Id[A],r[A]) in the context of the triple (p,g,y).
- (Id[A],r[A]) always implicitely refers to the triple (p,g,y) of its
- parent SKIA.
-
- The secret part of the key is s[A].
-
- k[A] must be destroyed by the SKIA immediately after key generation,
- because User A could solve the equation and find out the SKIAs secret
- x if he knew both the s[A] and k[A]. The random number k must not be
- used twice. s[A] must not be equal to 0.
-
- Since (r[A],s[A]) are the ElGamal signature on Id[A], the connection
- between the SKIA public key und the User key pair is the ElGamal
- verification equation:
-
- r[A] ^ s[A] = ( g ^ H(Id[A]) ) * ( y ^ (-r[A]) ) mod p.
-
- This equation allows to calculate r[A] ^ s[A] from public data
- without knowledge of the secret s[A]. Since this equation is used
- very often, and for reasons of readability, the abbreviation Y[A] is
- used for this equation.
-
- Y[A] means to calculate the value of r[A] ^ s[A] which is
-
- ( g ^ H(Id[A]) ) * ( y ^ (-r[A]) ) mod p.
-
-
-
-
-
-
- Danisch Informational [Page 6]
-
- RFC 1824 TESS August 1995
-
-
- Note that a given value of Y[A] is not reliable. It must have been
- reliably calculated from (p,g,y) and (Id[A],r[A]). Y[A] is to be
- understood as a macro definition, not as a value.
-
- Obviously both the SKIA and the User know the secret part of the
- User's key and can reveal it, either accidently or in malice
- prepense. The enhancements section below shows methods to avoid
- this.
-
- 3. Authentication
-
- This section describes the basic methods of applying the User keys.
- They refer to online and offline communication between two users
- A(lice) and B(ob).
-
- The unilateral and the mutual authentications use the KATHY protocol
- to generate reliable session keys for further use as session
- encryption keys etc.
-
- 3.1. Zero Knowledge Authentication
-
- The "Zero Knowledge Authentication" is used if Alice wants to
- authenticate herself to Bob without need for a session key.
-
- Assuming that Bob already reliably learned the (p,g,y) of the SKIA
- Alice got her key from, the steps are:
-
- 1. Alice generates a large random number t, 1<t<p-1, where t should
- have approximately the same length as p-1.
-
- 2. a := r[A] ^ t mod p
-
- 3. Alice sends her public key (Id[A],r[A]) and the number a to Bob.
-
- 4. Bob generates a large random number c, c<p-1, where c should have
- approximately the same length as p-1, and sends c to Alice.
-
- 5. Alice calculates
- c' := (c * s[A] + t) mod (p-1)
- and sends c' to Bob.
-
- 6. Bob verifies whether
- r[A] ^ c' = (Y[A] ^ c) * a mod p.
-
- This is the Beth-Zero-Knowledge protocol [8] which is based on self-
- certified public keys and an improvement of the DLP-Zero-Knowledge
- identification protocol from Chaum, Evertse, and van de Graaf [9].
-
-
-
-
- Danisch Informational [Page 7]
-
- RFC 1824 TESS August 1995
-
-
- 3.2. Unilateral Authentication
-
- The "Unilateral Authentication" (or "Half Authentication") can be
- used in those cases:
-
- - Alice wants to authenticate herself to Bob without Bob
- authenticating himself to Alice.
-
- - Bob wants to send an encrypted message to Alice readable by her
- only (offline encryption).
-
- A shared key is generated by the following protocol. This key can be
- known by Alice and Bob only.
-
- Assuming that Bob already reliably learned the (p,g,y) of the SKIA
- Alice got her key from, the steps are:
-
- 1. Alice sends her public key (Id[A],r[A]) to Bob if he does not
- already know it.
-
- 2. Bob chooses a random number 1 < z[A] < p-1 and calculates
- v[A] := r[A] ^ z[A] mod p
-
- 3. Bob sends v[A] to Alice.
-
- 4. Alice and Bob calculate the session key:
-
- Alice: key[A] := v[A] ^ s[A] mod p
- Bob: key[A] := Y[A] ^ z[A] mod p
-
- Apply the equations of the User Key Setup section to Bob's equation
- to see that Alice and Bob get the very same key in step 4:
-
- key[A] = r[A] ^ ( s[A] * z[A] ) mod p
-
- A third party cannot calculate key[A], because it has neither s[A]
- nor z[A]. Therefore, Bob can trust in the fact that only Alice is
- able to know the key[A] (as long as nobody else knows her secret
- s[A]).
-
- This protocol is based on the Diffie-Hellman scheme [10], but avoids
- the weakness of the missing authenticity of the public keys.
-
- In this protocol Bob did not verify whether Alice really knew her
- s[A] and was able to calculate key[A]. Therefore, a final challenge-
- response step should be performed in case of online communication
- (see the subsection below).
-
-
-
-
- Danisch Informational [Page 8]
-
- RFC 1824 TESS August 1995
-
-
- In case of sending encrypted messages, Bob can execute step 4 before
- step 3, use the key[A] to encrypt the message, and send the encrypted
- message together with v[A] in step 3.
-
- 3.3. Mutual Authentication
-
- The "Mutual Authentication" is used for online connections where both
- Alice and Bob want to authenticate to each other.
-
- Within this protocol description it is assumed that Alice and Bob
- have keys of the same SKIA and use the same triple (p,g,y). Otherwise
- in each step the triple has to be used which belongs to the user key
- it is applied to.
-
- The steps are as follows (where the first four steps are exactly
- twice the "Unilateral Authentication" and steps 5-9 form a mutual
- challenge-response step to find out whether the other side really got
- the key):
-
- 1. Alice sends her (Id[A],r[A]) to Bob.
- Bob sends his (Id[B],r[B]) to Alice.
-
- 2. Bob chooses a random number z[A] < p-1
- and calculates v[A] := r[A] ^ z[A] mod p
-
- Alice chooses a random number z[B] < p-1
- and calculates v[B] := r[B] ^ z[B] mod p
-
- 3. Bob sends v[A] to Alice.
- Alice sends v[B] to Bob.
-
- 4. Alice and Bob calculate the session keys:
-
- Alice: key[A] := v[A] ^ s[A] mod p
- key[B] := Y[B] ^ z[B] mod p
-
- Bob: key[B] := v[B] ^ s[B] mod p
- key[A] := Y[A] ^ z[A] mod p
-
- 5. Alice chooses a random number R[B]
- Bob chooses a random number R[A]
-
- 6. Alice sends Encrypt(key[B],R[B]) to Bob.
- Bob sends Encrypt(key[A],R[A]) to Alice.
-
- 7. Alice and Bob decrypt the received messages to R'[A] and R'[B].
-
-
-
-
-
- Danisch Informational [Page 9]
-
- RFC 1824 TESS August 1995
-
-
- 8. Alice sends Encrypt(key[A],T(R'[A])) to Bob.
- Bob sends Encrypt(key[B],T(R'[B])) to Alice.
-
- 9. Alice and Bob decrypt the received messages to R''[A] and R''[B]
-
- 10. Alice verifies whether T(R[B]) = R''[B].
- Bob verifies whether T(R[A]) = R''[A].
-
-
- T() is a simple bijective transformation function, e.g. increment().
-
- After step 4 Alice can trust in the fact that only Bob and herself
- can know key[B], but she still does not know whether she is really
- talking to Bob. Therefore, she forces Bob to make use of his key
- within steps 5-9. Alice now has checked whether she really talks to
- Bob. Since the scheme is symmetrical, Bob also knows that he talks to
- Alice.
-
- 3.4. Message Signing
-
- To sign a message m (where H(m) is a cryptographic hash value of the
- message), the message author A generates an ElGamal signature by
- using his r[A] as the generator and the s[A] as his secret:
-
- - A generates a random number K with gcd(K,p-1) = 1.
-
- - R := r[A] ^ K mod p
-
- - S := ( H(m) - s[A] * R ) * (K ^ -1) mod (p-1)
-
- The calculated set of numbers fulfills the equation:
-
- ( s[A] * R + K * S ) = H(m) mod(p-1)
-
- The signed message consists of (m,Id[A],r[A],R,S).
-
- The receiver of the message checks the authenticity of the message by
- calculating the hash value H(m) and verifying the equation:
-
- r[A] ^ H(m) = ( Y[A] ^ R ) * ( R ^ S ) mod p
-
- 4. Enhancements
-
- This section describes several enhancements and modifications of the
- base protocol as well as other comments.
-
-
-
-
-
-
- Danisch Informational [Page 10]
-
- RFC 1824 TESS August 1995
-
-
- 4.1. Non-Escrowed Key Generation
-
- Within the normal User Setup procedure for a User A, the SKIA gains
- knowledge about the secret key s[A]. The SKIA could use this key to
- fake signatures or decrypt messages, or to allow others to do so.
-
- To avoid this situation, a slight modification of the User Setup
- procedure may be applied. The SKIA Setup is the same as in the base
- protocol.
-
- Within the User Setup the SKIA does not use its primitive element g,
- but a generator created by the User instead.
-
- The modified scheme looks like this:
-
- - User A generates a random number a with gcd(a,p-1)=1
-
- - User A calculates g' := g^a mod p and forwards g' to the SKIA.
-
- - The SKIA generates Id[A] and k[A] as in the base protocol
-
- - The SKIA sets r[A] := ( g' ^ k[A] ) mod p and
- s'[A] := ( H(Id[A]) - x * r[A] ) * (k[A] ^ -1) mod (p-1)
-
- - The SKIA forwards (Id[A],r[A],s'[A]) to the user A
-
- - The user A calculates his s[A] := s'[A] * (a^-1) mod (p-1)
-
- The SKIA is not able to find out the secret key s[A] of A. This
- protocol is based on the idea of the 'testimonial' [11].
-
- The SKIA is still able to create a second key with the same Identity
- Descriptor (identical or at least having same contents), but with
- different r[A] and s[A]. If such a second key was successfully used
- for authentication or message signing, the real key owner can use his
- own key to proof the existence of two different keys with identical
- (equivalent) Descriptors. The existence of such two keys shows that
- the SKIA cannot be trusted any longer.
-
- If the key is generated by this method, it should be mentioned in the
- Identity Descriptor. This allows any communication partners to look
- up in the public part of a key whether the secret part is known to
- the SKIA.
-
- 4.2. Hardware Protected Key
-
- The protocol of the previous subsection guaranteed that the SKIA does
- not know the user's secret key.
-
-
-
- Danisch Informational [Page 11]
-
- RFC 1824 TESS August 1995
-
-
- On the other hand, the SKIA may wish that the user himself does not
- know his own secret key. This may be necessary because the user could
- otherwise reveal his secret key accidently or intentionally.
- Especially if untrusted hard- or software or an environment without
- trusted process protection is used, the secret key can be spied out.
- For high-level security applications this might not be acceptable.
- The key owner must be able to use his key without being able to read
- this key. This contradiction can be solved by hiding the secret part
- of the User Key within a protected hardware device.
-
- Within the SELANE project, the protocols described in this RFC were
- implemented for SmartCards. The User Key is created using the non-
- escrowed key generation procedure described in the previous section,
- modified such that the random number is generated inside the card.
- The secret s[A] exists only inside the card and does not get outside.
- The SmartCard is able to execute all parts of the algorithms which
- need access to the secret key. To make use of the SmartCard an
- additional password is required.
-
- If the key is hidden in such a hardware device, it should be
- mentioned in the Identity Descriptor. This allows any communication
- partners to look up in the public part of a key whether the key is
- hardware protected.
-
- 4.3. Key Regeneration
-
- If both methods of the previous subsections are used to protect the
- key, neither the SKIA nor the User himself knows the secret key. This
- could be harmful for the User if the hardware device is lost or
- damaged, because the User could become unable to decrypt messages
- encrypted with the public key.
-
- To prevent such a denial of service, there are two methods:
-
- - If the protection factor 'a' was choosen by the User, the User
- can deposit the factor 'a' in a secure way, e.g. give it as a
- shared secret to his friends. The SKIA can do the same and
- deposit s'[A] somewhere else. If the SKIA and the User
- cooperate, they are able to create a second hardware device
- equivalent to the first.
-
- - If the protection factor a was generated inside of the hardware
- device, the device itself may give out the s[A] or the a in a
- secure way (e.g. as a shared secret).
-
- Since the recreation of a User key defeats the property of such a key
- to exist only once, the SKIA should restrict this to special cases
- only. Furthermore it should be done only after the end of the
-
-
-
- Danisch Informational [Page 12]
-
- RFC 1824 TESS August 1995
-
-
- lifetime of the key, if its lifetime was limited.
-
- 4.4. r ^ r
-
- A slight modification of the base protocol allows some speedup in the
- key exchange:
-
- - The SKIA is created as in the base protocol
-
- - For the User Setup the SKIA solves the equation
- x * s[A] + r[A] * k[A] = H(Id[A]) mod (p-1)
- which differs from the base protocol in that r and s were swapped.
-
- - The public key allows to calculate
- y ^ s[A] = ( g ^ H(Id[A]) ) * ( r[A] ^ -r[A] ) mod p
- without knowing s[A]. Here the term ( r[A] ^ -r[A] ) can be
- precalculated for speedup.
-
- - Bob calculates key[A] := ( g ^ H(Id[A]) * r[A] ^ -r[A] ) ^ z[A]
- and v[A] := y ^ z[A] mod p
- Alice gets key[A] := v[A] ^ s[A] mod p
- where key[A] = y ^ (s[A] * z[A])
-
- This protocol is similar to the AMV modification by Agnew et al.
- [12].
-
- 4.5. Implicit Key Exchange
-
- If the r ^ r protocol of the previous section is used, an implicit
- shared key can be calculated for Alice and Bob by using the Diffie-
- Hellman scheme:
-
- - Alice: key[A,B] = ( g ^ H(Id[B]) * r[B] ^ -r[B] ) ^ s[A] mod p
-
- - Bob: key[B,A] = ( g ^ H(Id[A]) * r[A] ^ -r[A] ) ^ s[B] mod p
-
- where key[A,B] = key[B,A] = y ^ (s[A] * s[B]).
-
- This can not be used with Non-escrowed keys.
-
- 4.6. Law Enforcement
-
- This will be subject of a separate RFC.
-
-
-
-
-
-
-
-
- Danisch Informational [Page 13]
-
- RFC 1824 TESS August 1995
-
-
- 4.7. Usage of other Algebraic Groups
-
- Within this RFC calculations were based on a specific algebraic
- group, the multiplicative group of integers modulo a prime number p
- (which is the multiplicative group of a finite field GF(p)). However,
- any cyclic finite group with a strong discrete logarithm problem can
- be used, e.g., a subgroup of the multiplicative group or elliptic
- curves.
-
- As an example the subgroup used by the DSA (Digital Signature
- Algorithm) of length N can be used instead of the full multiplicative
- group of GF(p) for speedup (in this case the Secure Hash Algorithm
- SHA is recommended as the hash algorithm). See [13, 14] for a
- description of DSA and SHA.
-
- 4.7.1. DSA subgroup SKIA Setup
-
- - Generate large primes p and q such that p is at least 512 bit
- long, q is 160 bit long, and q is a factor of (p-1).
-
- - choose a primitive root h in GF(p)
-
- - g:= h^((p-1)/q)
- Note that g generates a subgroup G with |G|=q
-
- - x: a random number of about 160 bit.
-
- - y:= ( g ^ x ) mod p
-
- The public key of the SKIA is (p,g,y,q). (q is required for speedup
- only.)
-
- The secret key of the SKIA is x.
-
- 4.7.2. Escrowed DSA subgroup User Setup
-
- - k[A]: a random number of 160 bit length with gcd(k[A],q)=1
-
- - r[A]:= ( g ^ k[A] ) mod p
-
- - s[A]:= (H(Id[A]) + x * r[A]) * (k[A] ^ -1) mod q
-
- Again, (Id[A],r[A]) is the public key and s[A] is the secret key.
- Note that r[A] has the length of p and s[A] has the length of q (160
- bit).
-
-
-
-
-
-
- Danisch Informational [Page 14]
-
- RFC 1824 TESS August 1995
-
-
- 4.7.3. Non-Escrowed DSA subgroup User Setup
-
- - User A generates a random number h of 160 bit length.
-
- - User A calculates a := g^h mod p and sends a to the SKIA.
-
- - The SKIA generates the user key with the secret key s'[A].
-
- - User A calculates s[A]:= s'[a] * (h^-1) mod q
-
- 4.7.4. DSA subgroup Authentication
-
- The protocols for authentication are the same as described above,
- except that wherever the modulus (p-1) was used the smaller modulus q
- is used instead, and DSA is used for message signing.
-
- The abbreviation Y[A] still stands for r[A] ^ s[A], which is now (the
- sign of r[A] was changed for speedup)
-
- ( g ^ H(Id[A])) * ( y ^ r[A] ) mod p
-
- and can be calculated in a faster way as
-
- u1 * u2 mod p
-
- where
-
- u1 := g ^ ( H(Id[A]) mod q ) mod p
- u2 := y ^ ( r[A] mod q ) mod p.
-
- 5. Multiple SKIAs
-
- In the preceding sections it was assumed that everybody learned the
- (p,g,y) triple of a SKIA reliably.
-
- By default, a User reliably learns only the (p,g,y) of the SKIA which
- generated his own key, because he gets the triple with his key and
- can verify the triple with the signature verification equation.
-
- If the User wants to communicate with someone whose key was generated
- by a different SKIA, a method for authenticating the (p,g,y) of the
- other SKIA is needed.
-
- 5.1. Unstructured SKIAs
-
- This will be subject of a separate RFC.
-
-
-
-
-
- Danisch Informational [Page 15]
-
- RFC 1824 TESS August 1995
-
-
- 5.2. Hierarchical SKIAs
-
- If there is a hierarchy between the SKIAs, their keys can be
- generated hierarchically:
-
- - Every SKIA and every User has a level (expressed as a cardinal
- number). The root SKIA has level 0. All Users and all other SKIAs
- have levels greater than 0.
-
- - Each SKIA except the root SKIA is also a User, and each User can
- be a SKIA.
-
- A SKIA of level n generates keys for Users of level n+1.
-
- A User of level n is also a SKIA of level n.
-
- - Since every SKIA (except the root SKIA) is also a User, each SKIA
- has an Identity Descriptor describing its Identity and perhaps its
- level and its parent SKIA. There is a function parent(A) which
- finds the parent SKIA for every user A. This function may use
- informations stored in the Identity Descriptor.
-
- Thus, the parent() function allows to find the path to the root
- SKIA for every node of the tree forming the hierarchy.
-
- The root SKIA may also have an Identity Descriptor.
-
- - The root SKIA creates itself as in the base protocol.
-
- - The key for a User A of level n (n>0) is generated by the parent
- SKIA of level n-1. The public part is (Id[A],r[A]), the secret
- part is (s[A]).
-
- User A is automatically SKIA A:
-
- p[A] := p[parent(A)] = p of the root SKIA
- g[A] := r[A]
- x[A] := s[A]
- y[A] := g[A] ^ x[A] = r[A] ^ s[A] = Y[A] =
- ( g[parent(A)] ^ H(Id[A]) ) * ( y[parent(A)] ^ -r[A]) mod p
-
- Therefore, the public data (p,g[A],y[A]) of the SKIA A can be
- calculated by everyone from the public data of the User A and the
- public data of its parent SKIA. The SKIA A itself may use the
- faster method to get y[A] by calculating r[A] ^ s[A], while
- everybody else has to use the slower but public method as in the
- lower equation. The secret of the "SKIA A" is identical to the
- secret of the "User A".
-
-
-
- Danisch Informational [Page 16]
-
- RFC 1824 TESS August 1995
-
-
- Since a User A uses the very same data to act as either a user or
- as a SKIA, and since message signing (subsection 3.4.) is the very
- same procedure as generating a User key (in fact it is the same
- thing), a user should not sign a message which could be
- misunderstood as an Identity Descriptor. An attacker could
- intercept the message and its signature and abuse it as a User
- key. This can be avoided by the use of tags which preceed every
- set of data being signed and show whether it is a message or an
- Identity Descriptor.
-
- This scheme allows any two users (even users of distinct hierarchies)
- to communicate reliably. They need to know the public data (p,g,y) of
- each other's root SKIA only. There is no need for online key servers.
-
- The communication is the same as in the base protocols but with an
- extension to the method of finding Y[A] (again with Alice and Bob):
-
- - Bob reliably learned the (p,g,y) of Alice's root SKIA S(0).
-
- - Where Alice presented (Id[A],r[A]) only in the first step, she now
- presents (Id[S],r[S]) for each SKIA/User node S in her path to her
- root SKIA S(0). Since this information does not need to be
- reliable or signed, it can be provided by any simple server
- mechanism.
-
- - Bob iteratively calculates the public data (p,g,y) of each SKIA in
- the path, starting with Alice's root SKIA, until he gets the
- (p,g,y) of Alice where y is Y[Alice].
-
- Note that Bob did not have to verify anything within the iteration.
- After the iteration he has a set of public SKIA data (p,g,y) to be
- used with Alice public key, but he still does not know whether he was
- spoofed with wrong data of Alice or her parent SKIAs.
-
- Since the iteration Bob calculated is a chain of nested signatures,
- the correctness of the (p,g,y) he gets depends on every single step.
- If there is at least one step with a bad Id[S] or r[S], Bob will get
- a wrong Y[S] in this step and all following steps, and the chain
- doesn't work.
-
- If the chain calculated by Bob was not completely correct for any
- reason, Alice cannot make use of her key: her signatures do not
- verify, she cannot decrypt encrypted messages and she cannot answer
- to the challenge response step in case of mutual authentication.
-
-
-
-
-
-
-
- Danisch Informational [Page 17]
-
- RFC 1824 TESS August 1995
-
-
- 5.3. Example: A DNS-based public key structure
-
- Here is a simple example of the usage of the hierarchical SKIA scheme
- within the DNS name space:
-
- Let every domain also be a SKIA, and let the root domain be a root
- SKIA. Let the Identity Descriptor of any object within the name space
- be its name: the domain name for domains, the host name for machines,
- the mail address for humans and services.
-
- Consequently, a user with the mail address "danisch@ira.uka.de" got
- his key from the SKIA of the domain "ira.uka.de". This SKIA was
- authorized by the SKIA of "uka.de", which was authorized by the SKIA
- of "de", which is the root SKIA of Germany. It is assumed that
- everybody reliably learned the public key of the german root domain
- "de".
-
- The public key of danisch@ira.uka.de would look like:
-
- ( "danisch@ira.uka.de", r[danisch@ira.uka.de] ,
- "ira.uka.de" , r[ira.uka.de] ,
- "uka.de" , r[uka.de]
- )
-
- For the reasons described in the previous subsection, this key is
- self-certified and does not need any further signature.
-
- The key can be presented by danisch@ira.uka.de within online
- communications, be appended to signed messages, or simply be
- retrieved by the domain name server of ira.uka.de.
-
- Someone who reliably learned the (p,g,y) of the root domain .de
- (Germany) can now build the chain:
-
- "de" (p,g,y)[de]
- "uka.de" (p,g,y)[uka.de]
- "ira.uka.de" (p,g,y)[ira.uka.de]
- "danisch@ira.uka.de" (p,g,y)[danisch@ira.uka.de]
-
- Thus it is possible to reliably obtain the Y[danisch@ira.uka.de].
-
- To communicate with the whole world, knowledge of the public keys of
- all root domain SKIAs only is needed. These keys can be stored within
- some tens of KBytes. No third party is needed for doing an
- authenticated key exchange.
-
- The whole world could also be based on a single root SKIA; in this
- case a single (p,g,y) is needed only.
-
-
-
- Danisch Informational [Page 18]
-
- RFC 1824 TESS August 1995
-
-
- In a more realistic example the Id[danisch@ira.uka.de] could contain:
-
- creator= ira.uka.de
- created= 1-Jun-1995
- expiry= 31-Dec-1999
- protection= non-escrowed, smartcard
- type= human
- name= Hadmut Danisch
- email= danisch@ira.uka.de
- phone= +49 721 9640018
- fax= +49 721 696893
- photo= <digitized compressed portrait>
-
- Security Considerations
-
- - The strength of TESS depends on the strength of the discrete
- logarith problem, the strength of the ElGamal signature, and the
- confidentiality of the SKIAs.
-
- - Attention should be paid to the security considerations of the
- underlying mechanisms (ElGamal, DSA, Diffie-Hellman, etc.).
-
- - Since the SKIA creates itself under normal circumstances, an
- attacker could create his own SKIA and use it to create a User Key
- with an arbitrary Identity Descriptor. This shows that the
- Identity Descriptor is as reliable as the origin of the triple
- (p,g,y) of the SKIA it came from. The User Key creation process is
- a signature process for the Identity Descriptor and strongly
- depends on the trustworthyness of the signing SKIA.
-
- - It is the SKIA's duty to give the s[A] only to the user the
- Identity Descriptor belongs to.
-
- - Since the very same procedure is used for signing messages and
- generating user keys, it is important to distinguish between
- messages and keys.
-
- - The authentication protocols work without an online authority.
- Therefore, there is no simple way for revoking keys. For this
- reason keys should have an expiration date mentioned in the
- Identity Descriptor. In case of the hierarchical scheme a key
- expires if any key in the path to the root SKIA expires.
-
-
-
-
-
-
-
-
-
- Danisch Informational [Page 19]
-
- RFC 1824 TESS August 1995
-
-
- References
-
- 1. Th. Beth, F. Bauspiess, H.-J. Knobloch, S. Stempel, "TESS - A
- Security System based on Discrete Exponentation," Computer
- Communcations Journal, Vol. 17, Special Issue, No. 7, pp.
- 466-475 (1994).
-
- 2. T. ElGamal, "A Public Key Cryptosystem and a Signature Scheme
- Based on Discrete Logarithm," IEEE-Trans. Information Theory,
- IT-31, pp. 469-472 (July 1985).
-
- 3. B. Klein, H.-J. Knobloch, "ElGamal-Signatur" in
- Sicherheitsmechanismen, ed. Fries, Fritsch, Kessler, Klein, pp.
- 171-176, Oldenburg, Muenchen (1993).
-
- 4. C. G. Guenther, "An Identity-Based Key-Exchange Protocol" in
- Advances in Cryptology, Proceedings of Eurocrypt '89, pp. 29-37,
- Springer (1990).
-
- 5. B. Klein, H.-J. Knobloch, "KATHY" in Sicherheitsmechanismen, ed.
- Fries, Fritsch, Kessler, Klein, pp. 252-259, Oldenburg, Muenchen
- (1993).
-
- 6. F. Bauspiess, H.-J. Knobloch, "How to keep authenticity alive in a
- computer network" in Advances in Cryptology, Proceedings of
- Eurocrypt '89, pp. 38-46, Springer (1990).
-
- 7. F. Bauspiess, "SELANE - An Approach to Secure Networks" in
- Abstracts of SECURICOM '90, pp. 159-164, Paris (1990).
-
- 8. Th. Beth, "Efficient zero-knowledge identification scheme for
- smart cards" in Advances in Cryptology, Proceedings of Eurocrypt
- '88, pp. 77-84, Springer (1988).
-
- 9. D. Chaum, J. H. Evertse, J. van de Graaf, "An improved protocol
- for demonstrating possesion of discrete logarithms and some
- generalizations" in Advances in Cryptology, Proceedings of
- Eurocrypt '87, pp. 127-141, Springer (1988).
-
- 10. W. Diffie, M. Hellman, "New directions in cryptography," IEEE-
- Trans. Information Theory, 22, pp. 644-654 (1976).
-
- 11. Th. Beth, H.-J. Knobloch, "Open network authentication without an
- online server" in Proc. Symposium on Comput. Security '90, pp.
- 160-165, Rome, Italy (1990).
-
-
-
-
-
-
- Danisch Informational [Page 20]
-
- RFC 1824 TESS August 1995
-
-
- 12. G. B. Agnew, R. C. Mullin, S. A. Vanstone, "Improved digital
- signature scheme based on discrete exponentation," Electron.
- Lett., 26, pp. 1024-1025 (1990).
-
- 13. "The Digital Signature Standard," Communications of the ACM, Vol.
- 35, pp. 36-40 (July 1992).
-
- 14. Bruce Schneier, Applied Cryptography, John Wiley & Sons (1994).
-
- Author's Address
-
- Dipl.-Inform. Hadmut Danisch
- European Institute for System Security (E.I.S.S.)
- Institut fuer Algorithmen und Kognitive Systeme (IAKS)
-
- University of Karlsruhe
- D-76128 Karlsruhe
- Germany
-
- Phone: ++49 721 96400-18
- Fax: ++49 721 696893
- EMail: danisch@ira.uka.de
- WWW: http://avalon.ira.uka.de/personal/danisch.html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Danisch Informational [Page 21]
-
- .
-